With Ada.Containers.Vectors;
With P_PARAMETRE;		Use P_PARAMETRE;
With Gtk.Button;		Use Gtk.Button;
With Gdk.Color;		Use Gdk.Color;
With Gtkada.C;		Use Gtkada.C;
With Gtk.Label;		Use Gtk.Label;
With Gtk.Box;			Use Gtk.Box;
with Plateaux; 			use Plateaux;
with Partie; 			use Partie;
with Joueurs; 			use Joueurs;
with Cellules; 			use Cellules;

Package P_Panel_Game Is

   Type Chaine Is New String(1..7);

   Package ArrayButton Is New Ada.Containers.Vectors(Index_Type   => Positive,
                                                     Element_Type => Gtk_Button);

   Package ArrayColor Is New Ada.Containers.Vectors(Index_Type   => Positive,
                                                    Element_Type => Chaine);

   Type Liste_Button is New ArrayButton.Vector With Null Record;
   Type Liste_Couleur Is New ArrayColor.Vector With Null Record;

   Type T_Panel_Game Is Record
      Grille : Liste_Button;
      CouleurPions : Liste_Couleur;
      EcranNom ,
      EcranSymbole ,
      Score_Joueur1,
      Score_Joueur2,
      score_null   : Gtk_Label;
      Container    : Gtk_Vbox;
      Replay       : Gtk_Button;
      Historique : Liste_Button;
   End Record;

   Procedure Construct(Parametre : T_Parametre) ;
   --Initialise ou renitialise la variable de classe Panel_Game
   Procedure Set_Grille(Grille : in Liste_Button);
   --Setter de Grille de jeu
   Procedure Set_CouleurPions(CouleurPions : Liste_Couleur);
   --Setter de CouleurPions
   Procedure Set_Container(Container : Gtk_Vbox);
   --Setter de Container
   Procedure Set_EcranNom(Ecran : Gtk_Label);
   --Setter de EcranNom

   Function Get_Grille Return Liste_Button;
   --Getter de Grille
   Function Get_CouleurPions Return Liste_Couleur;
   --Getter de CouleurPions la liste des couleurs des pions des joueurs
   Function Get_Container Return Gtk_Vbox;
   --Getteur de Container le container principale
   Function Get_EcranNom Return Gtk_Label;
   Function Get_Game Return Partie.T_Game;
   Procedure Mise_A_Jour_Ecran;
   Procedure Mise_A_Jour_Score;
   Procedure Set_Game(Game: T_Game);
   Procedure Init_Game(Joueur1,Joueur2:Joueur;IA_j1,IA_j2:IA_Difficulty;Grille_jeu:Plateau;
                       Couleur1,Couleur2 : Gdk_Color);
   Procedure Joueur_Suivant;
   Procedure Rejouer;

private
   Panel_Game : T_Panel_Game;
   Game       : Partie.T_Game;
   Procedure Jouer_Game(Event : access gtk_Button_record'Class);
   Procedure Desactive_Grille;
   Procedure Replay(Event : access gtk_Button_record'Class);

End P_Panel_Game;
